# coding=utf-8
"""
CSDN_Python闯关特训营
第一周闯关作业_赵文川
本周共计3个作业：
1) 使用while和for…in两个循环分别输出四种九九乘法表效果（共计8个）。
2) 使用文件和目录操作，定义一个统计指定目录大小的函数（注意目录中还有子目录）。
3) 参考第9节的综合案例中的学生信息管理，来实现一个自动取款机的存取款模拟效果
。要求有登陆和退出、查询余额、取钱，存钱等操作。
详情查看:http://csdn-edu-teacher.oss-cn-beijing.aliyuncs.com/230-170-1-1563872807.zip?OSSAccessKeyId=LTAInu0oRIELrjsF&Signature=viUMd38QKMzZGaKLDluUB2nVUuE%3D&Expires=1577357163
"""
"""
    自动取款机的存取款模拟
    1.用户信息数据源(账号,密码,余额)
    2.登录验证
    3.查询余额
    4.存取钱
    5.退出
    6.界面和交互
"""
# 1.用户信息数据源(卡号,密码,余额)
user01 = {'卡号': '00001', '密码': '123', '余额': '100'}
user02 = {'卡号': '00002', '密码': '123', '余额': '100'}
user03 = {'卡号': '00003', '密码': '123', '余额': '100'}
User_list = [user01, user02, user03]

user_new = []  # 当前操作用户
a = 0  # 判断是否登录成功 1:成功登录


# 2.登录验证
def log_on():
    Card_number = input("请输入卡号: ")
    global user_new, a
    frequency = 0  # 判断是否输出'卡号不存在' 1:卡号存在 0:卡号不存在
    Error = 0  # 密码错误次数
    for personal in User_list:
        if Card_number == personal['卡号']:
            frequency = 1
            while True:
                password = input("请输入密码: ")
                if personal['密码'] == password:
                    user_new = personal  # 登录验证成功认证:1,成功;0,失败
                    print("卡号登录成功!")
                    a = 1
                    break
                else:
                    print("密码错误,请重新输入(3次机会,还剩{}次机会)".format(3 - Error))
                    Error += 1
                    if Error == 3:
                        pass
    else:
        if frequency == 0:
            print("卡号不存在!!")


# 测试2.登录验证
# log_on()
# print(user_new['余额'])


# 3.查询余额,全局变量作用于局部变量
def balance():
    if a == 1:
        print("卡号: {}   余额: {}".format(user_new['卡号'], user_new['余额']))
    else:
        print("请先登录!")


# 测试3.查询余额
# balance()
# log_on()
# balance()


# 4.存取钱
def money_OutIn():
    if a == 1:
        n = input("取钱按1  存钱按2")
        if n == '1':
            money = input("输入取钱金额: ")
            user_new['余额'] = str(int(user_new['余额']) - int(money))
        elif n == '2':
            money = input("输入存钱金额: ")
            user_new['余额'] = str(int(user_new['余额']) + int(money))
        else:
            money_OutIn()


# 5.退出
def loginOut():
    pass


# 6.界面和交互
while True:
    # 输出初始界面
    print('=' * 8, '自动取款机的存取款模拟', '=' * 8)
    print('{:1} {:13} {:15}'.format(' ', '1. 登录验证', '2. 查询余额'))
    print('{:1} {:13} {:15}'.format(' ', '3. 存取钱', '4. 退出'))
    print('=' * 40)
    key = input('请输入对应的选择')
    # 根据输入操作值，执行对应操作
    if key == '1':
        log_on()
        input('按回车继续：')
    elif key == '2':
        print('=' * 12, '查询余额', '=' * 12)
        balance()
        input('按回车继续：')
    elif key == '3':
        print('=' * 12, '存取钱', '=' * 12)
        money_OutIn()
        input('按回车继续：')
    elif key == '4':
        loginOut()
        print('=' * 12, '再见', '=' * 12)
        break
    else:
        print('=' * 12, '操作无效', '=' * 12)